/*
욱톡 서버임 ^^

여기선 멀티스레드 방식으로 1:1 채팅이 가능하며

로그를 저장해서 정보통신보안법에 위배되지 않는 기능을 한다.

프로그램의 초기 버전으로 확장으로 가는 하나의 과정인 소스코드이다.

Contributor : Kim Jung-Yu
E-mail : jyk0601@gmail.com
file-name : Server_ver2.c

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

int main(int argc, char *argv[])
{
	int serv_sock;
	int clnt_sock;
	char *str;
	char buf[512];
	
	FILE *fp;

	struct sockaddr_in serv_addr;
	struct sockaddr_in clnt_addr;
	socklen_t clnt_addr_size;

	char message[] = "Hello World!";

	if(argc > 3)
	{
		printf("Usage 1. ./%s <port>\nUsage 2. ./%s (enter)\n", argv[0], argv[0]);
		exit(1);
	}

	serv_sock = socket(PF_INET, SOCK_STREAM, 0);
	
	memset(&serv_addr, 0, sizeof(serv_addr));
	serv_addr.sin_family=AF_INET;
	serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
	if(argc == 1)
		serv_addr.sin_port=htons(80);	
	else
		serv_addr.sin_port=htons(atoi(argv[1]));

	bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr));
	listen(serv_sock, 5);
	while(1)
	{
	clnt_addr_size=sizeof(clnt_addr);
	clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);
	if( clnt_sock == -1 )
		fputs("accept() error\n", stderr);
	else
		printf("accept() succes!!\n");

//	write(clnt_sock, message, sizeof(message));
	//fp = fopen("hi.html", O_RDONLY);
	
	str = "</body></html>";
	write(clnt_sock, str, strlen(str));
	

	close(clnt_sock);
	}
	close(serv_sock);
	return 0;
	
}

/*

log_1 : 2012. 07. 18

*/
